unit untCadastroCliente;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, untCadastroPadrao, Buttons, ExtCtrls, FMTBcd, DB, SqlExpr,
  StdCtrls, Mask, DBCtrls;

type
  TfrmCadastroCliente = class(TfrmCadastroPadrao)
    edtcodigo: TEdit;
    edtnome: TEdit;
    lbl1: TLabel;
    lbl2: TLabel;
    lbl3: TLabel;
    lbl4: TLabel;
    lbl5: TLabel;
    lbl6: TLabel;
    lbl7: TLabel;
    lbl8: TLabel;
    lbl9: TLabel;
    lbl10: TLabel;
    lbl11: TLabel;
    lbl12: TLabel;
    lbl13: TLabel;
    lbl14: TLabel;
    lbl15: TLabel;
    edtRua: TEdit;
    edtBairro: TEdit;
    edtnumero: TEdit;
    edtemail: TEdit;
    dblestado: TDBLookupComboBox;
    dblmunicipio: TDBLookupComboBox;
    edtcpf: TMaskEdit;
    edtdatanasc: TMaskEdit;
    edttelefone: TMaskEdit;
    edtcep: TMaskEdit;
    edtdatacad: TMaskEdit;
    edtobs: TEdit;
    cbbsituacao: TComboBox;
    procedure btnGravarClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure LimparCampos();
    procedure dblestadoClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCadastroCliente: TfrmCadastroCliente;

implementation

uses untDM, untFuncao, untListagemCliente;

{$R *.dfm}

procedure TfrmCadastroCliente.LimparCampos();
var  i : integer;
begin
  for  i := 0  to ComponentCount -1 do
  begin
    if (Components[i] is TEdit) Then
       (Components[i] as TEdit).Clear;

    if (Components[i] is TMaskEdit) then
       (Components[i] as TMaskEdit).Clear;

    if (Components[i] is TComboBox) then
       (Components[i] as TComboBox).ItemIndex := -1;

    if (Components[i] is TDBLookupComboBox) then
       (Components[i] as TDbLookupComboBox).KeyValue := null;
  end;

end;

procedure TfrmCadastroCliente.FormShow(Sender: TObject);
begin

  DM.cdsCliente.Open;
  DM.sdsEstado.Open;
  DM.sdsMunicipio.Open;

  if Self.Tag = 1 then
  begin
    Self.Caption := 'Cadastrar um novo Cliente';
    edtdatacad.Text := DateToStr(Date);
  end;

  if self.Tag = 2 then
  begin
    Self.Caption := 'Alterar um Cliente';

    // PUCHAR CAMPOS DA GRID
    edtcodigo.Text := DM.cdsCliente.FieldByName('cli_codigo').AsString;
    cbbsituacao.ItemIndex := cbbsituacao.Items.IndexOf(DM.cdsCliente.FieldByName('cli_situacao').AsString);
    edtnome.Text := DM.cdsCliente.FieldByName('cli_nome').AsString;
    edtcpf.Text := DM.cdsCliente.FieldByName('cli_cpf').AsString;
    edtdatanasc.Text := DM.cdsCliente.FieldByName('cli_datanasc').AsString;
    edttelefone.Text := DM.cdsCliente.FieldByName('cli_telefone').AsString;
    edtdatacad.Text := DM.cdsCliente.FieldByName('cli_datacad').AsString;
    edtRua.Text := DM.cdsCliente.FieldByName('cli_rua').AsString;
    edtBairro.Text := DM.cdsCliente.FieldByName('cli_bairro').AsString;
    edtnumero.Text := DM.cdsCliente.FieldByName('cli_numero').AsString;
    edtcep.Text := DM.cdsCliente.FieldByName('cli_cep').AsString;
    dblestado.KeyValue := DM.cdsCliente.FieldByName('CODIGO_UF_IBGE').AsInteger;
      if dblestado.Text <> '' then
      begin
        DM.sdsMunicipio.Active := False;
        DM.sdsMunicipio.DataSet.ParamByName('COD_UF_IBGE').AsInteger := strtoint(dblestado.KeyValue);
        dblmunicipio.ListField := 'MUNICIPIO';
        dblmunicipio.KeyField := 'COD_MUN_IBGE';
        DM.sdsMunicipio.Active := true;
        dblmunicipio.KeyValue := DM.cdsCliente.FieldByName('COD_MUN_IBGE').AsInteger;
      end;
    edtemail.Text := DM.cdsCliente.FieldByName('cli_email').AsString;
    edtobs.Text := DM.cdsCliente.FieldByName('cli_obs').AsString;
  end;
end;

procedure TfrmCadastroCliente.dblestadoClick(Sender: TObject);
begin
  inherited;
  DM.sdsMunicipio.Active := False;
  DM.sdsMunicipio.DataSet.ParamByName('COD_UF_IBGE').AsInteger := strtoint(dblestado.KeyValue);
  dblmunicipio.ListField := 'MUNICIPIO';
  dblmunicipio.KeyField := 'COD_MUN_IBGE';
  DM.sdsMunicipio.Active := true;
end;

procedure TfrmCadastroCliente.btnGravarClick(Sender: TObject);
begin
  inherited;
  if Self.Tag = 1 then // INSERIR
    sdsComando.CommandText := 'insert into Clientes (codigo_uf_ibge, cod_mun_ibge,'+
                              'cli_nome, cli_cpf, cli_rua, cli_bairro, cli_numero,'+
                              'cli_cep, cli_obs, cli_datanasc, cli_datacad, '+
                              'cli_telefone, cli_situacao, cli_email) '+
                              'values (:estado, :mun, :nome, :cpf, :rua, :bairro, :numero,'+
                              ':cep, :obs, :datanasc, :datacad, :telefone, '+
                              ':situacao, :email)'

  else if Self.Tag = 2 then // Alterar
  begin
      sdsComando.CommandText := 'update clientes set codigo_uf_ibge = :estado , cod_mun_ibge = :mun,' +
                                'cli_nome = :nome, cli_cpf = :cpf, cli_rua = :rua, '+
                                'cli_bairro = :bairro, cli_numero = :numero, cli_cep = :cep,'+
                                'cli_obs = :obs, cli_datanasc = :datanasc, cli_datacad = :datacad,'+
                                'cli_telefone = :telefone, cli_situacao = :situacao, cli_email = :email'+
                                'where cli_codigo = :codigo';
      sdsComando.ParamByName('codigo').AsInteger := dm.cdsCliente.FieldByName('cli_codigo').AsInteger;
  end;

    sdsComando.ParamByName('estado').AsInteger := dblestado.KeyValue;
    sdsComando.ParamByName('mun').AsInteger := dblmunicipio.KeyValue;
    sdsComando.ParamByName('nome').AsString := edtnome.Text;
    sdsComando.ParamByName('cpf').AsString := edtcpf.Text;
    sdsComando.ParamByName('rua').AsString := edtRua.Text;
    sdsComando.ParamByName('bairro').AsString := edtBairro.Text;
    sdsComando.ParamByName('numero').AsString := edtnumero.Text;
    sdsComando.ParamByName('cep').AsString := edtcep.Text;
    sdsComando.ParamByName('obs').AsString := edtobs.Text;
    sdsComando.ParamByName('datanasc').AsDate := StrToDate(edtdatanasc.Text);
    sdsComando.ParamByName('datacad').AsDate := StrToDate(edtdatacad.Text);
    sdsComando.ParamByName('telefone').AsString := edttelefone.Text;
    sdsComando.ParamByName('situacao').AsString := cbbsituacao.Text;
    sdsComando.ParamByName('email').AsString := edtemail.Text;
    sdsComando.ExecSQL();

    DM.cdsCliente.Close;
    DM.cdsCliente.Open;
end;


end.
